The invention is related to Internet Protocol (IP) telephony systems. More specifically, the invention is related to systems and methods for routing the data packets that carry communications enabled by an IP telephony system, such as telephone calls and text or video messages.
Existing IP telephony systems allow users to place and receive telephone calls or to send and/or receive other types of communications, such as text messages, SMS messages, MMS messages and the like. The communications are transmitted, at least in part, by data packets that traverse a private and/or public data network.
For example, a calling party can place a telephone call to a called party using an IP telephony device that is coupled to a private or public data network. When the user requests that the call be placed, an IP telephony system receives the request and sets up the call between the calling party's telephony device and the called party's telephony device. The called party's telephony device can also be an IP telephony device that is coupled to a private or public data network. Alternatively, the called party's telephony device could be an analog telephone that is coupled to a publically switched telephony network (PSTN). In still other instances, the called party's telephony device could be a cellular telephone or a mobile computing device with cellular telephone capabilities that is coupled to a cellular telephony network.
Typically, an IP telephony system receives a call setup request from the calling party's telephony device at an inbound proxy server (or a session border controller, or an originating gateway). The inbound proxy server consults a routing engine to determine the identity of an outbound proxy server (or session border controller or destination gateway) that is capable of communicating with the called telephony device. The inbound proxy server passes along the call setup request to the outbound proxy server. The outbound proxy server then contacts the called telephony device to attempt to setup the call.
During the call setup, the calling telephony device and the called telephony device are instructed where to send data packets bearing the media of the telephony communication so that those data packets can be delivered to the other telephony device. Often, a media relay is selected, and both the calling and called telephony devices are instructed to send data packets to the media relay, and to receive data packets from that media relay. In some instances, two or more media relays may be used in a chain fashion to create a path for the data packets to travel between the calling and called telephony devices.
Once the call has been setup, the called and calling telephony devices send data packets back and forth to each other using the path established during call setup. And this path typically no longer includes the inbound and outbound proxy servers. Instead, the path typically includes only one or more media relays that are used to help transmit the data packets between the calling and called telephony device.
The complete path that the data packets traverse across the data network usually includes other devices in addition to the media relays that are identified during call setup. For example, when both the calling telephony device and the called telephony device are IP telephony devices, the calling and called telephony devices will likely use an interface device of some type to gain access to the data network. The interface device could be a wired or wireless router, or some other type of data network interface device. Regardless, the interface devices are also a part of the overall path that data packets traverse as they travel between the calling and called telephony device.
If one of the calling and called telephony devices is an analog telephony device that reachable through a PSTN, or a cellular telephony device that is reachable via a cellular telephony service provider, the path will likely include a gateway that act as an interface between the data network and the PSTN or cellular telephony service provider.
If both the calling and called telephony device are IP telephony devices, in some instances, the called and calling telephony device may be instructed to send data packets directly back and forth between each other. In this instance, the path would not include a media relay. However, the path would still likely include the data network interface devices which the calling and called telephony devices use to access the data network.
In addition, when data packets are sent across a data network such as the Internet, the data packets typically make multiple separate hops between various nodes of the public Internet. As a result, two consecutive data packets generated by the calling telephony device could traverse vastly different paths as they make their way between the calling telephony device and the called telephony device.
The quality of a telephone call, or any other type of communication carried in this fashion, is highly dependent on how well the data packets carrying the media of the telephony communication are being transmitted over the relevant private and/or public data networks. If data packets are being lost, call quality will deteriorate. If transmitted data packets are being significantly delayed, call quality will deteriorate. Another problem is jitter, where the latency or delay is variable in nature. If jitter becomes a problem, call quality also will deteriorate.
Presently, IP telephony systems have only limited control over the path that data packets bearing the media of a telephony communication traverse as the data packets travel between a calling and called telephony device. Typically, the IP telephony can only determine the identity of the media relays that are used in the path.
When the IP telephony system had a choice about which media relay or relays to select for a particular telephony communication, the media relay or relays were often selected based on their physical proximity to the calling or called telephony devices, or based on their proximity to the proxy servers that were responsible for setting up the call. The assumption was that if the media relay(s) are physically close to the calling and/or called telephony devices, they will provide higher call quality than media relays that are located further away from the calling and/or called telephony devices. Unfortunately, this is not always a good assumption.
In some instances, the IP telephony systems would track the quality provided by individual media relays over an extended period of time. This historical data could also be used to select particular media relays for an individual telephony communication. However, databases indicating the call quality provided by various media relays are necessarily based on past performance. As a result, historical databases can only provide a prediction of the likely call quality that a media relay will provide based on how well the media relays performed in the past. Unfortunately, there is no guarantee that a media relay that performed well in the past will perform well for a new call that is just being setup.
Moreover, even if the initial path that is established for a telephony communication provides good quality, there is always the possibility that network conditions may change while the telephony communication is ongoing, and that those changes may result in a deterioration of the quality provided by the initial path. In known methods, once the path is established during call setup, the path cannot be changed.
What is needed is a method of selecting media relay(s) for a communications path for a telephony communication that takes into account the actual network conditions that exist at the time the telephony communication is being setup. What is also needed is a way to determine when the quality provided by a path is deteriorating, and a way to switch to a different path offering better quality while the telephony communication is ongoing.